Snyk IaCの結果をHTMLファイルに出力する
こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
今回は、Snyk IaCの解析結果をHTMLファイルに出力してみようと思います。
以前の「Snyk IaCの結果をWeb UIに直接出力する」では、GitHubが使えない環境下で Snyk Web UI に Snyk IaC の結果を出力する方法をご紹介しました。
今回は、「snyk/snyk-to-html」を使って、snyk iac test
コマンドの結果をHTML出力しようと思います。
はじめに
まず初めに、snyk iac test
コマンドでは以下の形式からテスト結果を出力できます。
- JSON
- SARIF
Snyk CLIコマンド単体ではHTML出力できないため、今回は「snyk/snyk-to-html」を使ってJSON形式からHTML形式へ変換します。
余談ですが、snyk iac describe
コマンドでは、HTML形式で結果を出力可能です。
Options for output
--quiet
Output only the scan result to stdout.--json
Output the report as JSON to stdout.--html
Output the report as html to stdout.--html-file-output=
Output the report as html into a file.
やってみた
今回、以下のコードを使用します。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.22.0"
}
}
backend "s3" {
bucket = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key = "snyk_iac_test/terraform.tfstate"
region = "ap-northeast-1"
}
}
provider "aws" {
region = "ap-northeast-1"
}
data "aws_region" "current" {}
data "aws_caller_identity" "self" {}
resource "aws_ebs_volume" "example" {
availability_zone = "${data.aws_region.current.name}a"
size = 40
tags = {
Name = "${var.pref}-snyk-iac-volume"
}
}
想定では「EBSの暗号化設定」が行われていない脆弱性が検出されます。
インストール
まずは、インストールを行います。README.mdに記載されている通りインストールを行います。
npm install snyk-to-html -g
パイプ(|)を使用する方法で実行
デフォルトではsnyk-to-htmlは、snyk iac test
コマンドのstdout(標準出力)からstdin(標準入力)で受け取り実行します。
そのため、パイプ(|)でI/Oを受け渡して実行してみます。
snyk iac test --json | snyk-to-html -o results.html
想定通り、EBSについて脆弱性が検出されました。
JSONファイルからHTML変換
先程は、パイプ(|)を利用してI/Oの受け渡しを行いました。
続いては、JSON形式で出力したファイルを入力値としてHTMLファイルを作成します。
まずは、snyk iac test
コマンドの出力結果をJSON形式で保存します。
snyk iac test --json > results.json
JSON形式で保存した結果を「-i
」オプションで入力値として受け取り実行します。
snyk-to-html -i results.json -o results_from_jsonfile.html
summaryオプション
「-s
」オプションを使用することで、HTMLレポートをよりシンプルなレポートにできます。
snyk-to-html -i results.json -s -o results_summary.html
「-s
」オプションを使用した場合、「Impact」や「Remediation」が省略されたレポートが作成されます。
オプションなし(デフォルト)
オプションあり
個人的には、Public IDのリンクを踏めば「Impact」や「Remediation」は同じものが表示されるので、オプションの利用がオススメです。
参考
おわりに
以上、「Snyk IaCの解析結果をHTMLファイルに出力」でした。
snyk iac test
コマンドでもHTML出力できないか探していたところ見つかったソリューションになります!
「snyk-to-html」は、Snyk IaC以外のsnyk test
系のコマンドでも利用可能なため、ぜひその他コマンドでも利用してみてください。
以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!